// Copyright 2011 George Cook
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.


#import <Foundation/Foundation.h>
#import "InjectivePropertyValueDescription.h"

@interface InjectivePropertyDescription : NSObject {
	NSString *propertyName;
	NSString *idRef;
	NSString *type;
	InjectivePropertyValueDescription *value;
	NSString *sourcePropertyName;
}

@property (retain, readwrite) NSString *propertyName;
@property (retain, readwrite) NSString *idRef;
@property (retain, readwrite) NSString *type;
@property (retain, readwrite) InjectivePropertyValueDescription *value;
@property (retain, readwrite) NSString *sourcePropertyName;

+ (id) propertyDescriptionWithPropertyName:(NSString *) propertyName andValue:(InjectivePropertyValueDescription *) value;
+ (id) propertyDescriptionWithPropertyName:(NSString *) propertyName andRef:(id) ref;
+ (id) propertyDescriptionWithPropertyName:(NSString *) propertyName andType:(id) type;
+ (id) propertyDescriptionWithPropertyName:(NSString *) propertyName andRef:(id) ref andSourcePropertyName:(NSString *) sourcePropertyName;
+ (id) propertyDescriptionWithPropertyName:(NSString *) propertyName andType:(id) type andSourcePropertyName:(NSString *) sourcePropertyName;

+ (id) propertyDescriptionWithPropertyName:(NSString *) propertyName;

- (id)initWithPropertyName:(NSString *) aPropertyName andValue:(InjectivePropertyValueDescription *) aValue;
- (id)initWithPropertyName:(NSString *) aPropertyName andRef:(id) aRef;
- (id)initWithPropertyName:(NSString *) aPropertyName andType:(id) aType;

@end
